{
    SchemaConfigRoot: {
        SchemaType: SchemaTypeDict
    },
    "aid[A-Z]\\w+": {
        SchemaType: SchemaTypeDict,
        SchemaRule: [
            HasKey(PAIConst.ApiName),
            KeyIn([PAIConst.ApiName, PAIConst.ApiHandler, PAIConst.ApiParams, PAIConst.ApiResult, PAIConst.ApiPost])
        ]
    },
    PAIConst.ApiName: {
        SchemaType: SchemaTypeString,
        SchemaRule: [
            NotEmpty(SchemaTypeString)
        ]
    },
    PAIConst.ApiHandler: {
        SchemaType: SchemaTypeString,
        SchemaRule: [
            NotEmpty(SchemaTypeString)
        ]
    },
    PAIConst.ApiParams: {
        SchemaType: SchemaTypeArray,
        SchemaRule: [
            CheckForeachAsType(PAIConst.ApiData)
        ]
    },
    PAIConst.ApiData: {
        SchemaType: SchemaTypeDict,
        SchemaRule: [
            HasKey(PAIConst.ApiDataType, PAIConst.ApiDataValue),
            KeyIn([PAIConst.ApiDataType, PAIConst.ApiDataValue])
        ]
    },
    PAIConst.ApiDataType: {
        SchemaType: SchemaTypeString,
        SchemaRule: [
            ValueIn(PAIConst.ApiDataTypeCollection)
        ]
    },
    PAIConst.ApiDataValue: {
        SchemaType: SchemaTypeString,
        SchemaRule: [
            NotEmpty(SchemaTypeString)
        ]
    },
    PAIConst.ApiResult: {
        SchemaType: SchemaTypeArray,
        SchemaRule: [
            CheckForeachAsType(PAIConst.ApiData)
        ]
    },
    PAIConst.ApiPost: {
        SchemaType: SchemaTypeArray,
        SchemaRule: [
            CheckForeachAsType(PAIConst.ApiData)
        ]
    }
}
